#include "main.h"

/************************
    ESP8266 UART2
    PMD4    UART3
************************/
int main()
{
	int count = 0;
	
    BSP_ClockInit();
    
    BSP_Timer3Init(); 
    
    // 电源控制部分
    BSP_PowerInit();
    Delay_ms(200);

    // 电池电压ADC
    BSP_ADCInit();
    
    // LCD
    #ifdef Device_LCD
    Delay_ms(1000);   
    SimLCD_Init();

    DevParam.AirInforGetTime   = 3000;
    DevParam.BatIconRefreshTime= 3000;
    DevParam.BatInforGetTime   = 3000;
    DevParam.SideBeatTime      = 3000;
    
    DevParam.ShowPM1_0 = 200;
    DevParam.ShowPM2_5 = 200;
    DevParam.ShowPM10  = 200;
    #endif
    
	// 初始化WiFi设备
	ESP8266_STAInit();
		
	// 等待配网成功
	while(DevParam.NetWorkFlow != 5)	{
		if(UART2ReadFlag&0x8000)
		{
			//判断当前网络状态
			if(strstr((char *)UART2ReadBuf, "WIFI GOT IP"))
			{
				DevParam.NetWorkFlow = 5;
				break;
			}
			memset((void *)UART2ReadBuf, 0, sizeof(UART2ReadBuf));
			UART2ReadFlag = 0;      
		}
		Delay_ms(10);
		count++;
		if (count > 1000)
		{
			// 10s中没有连网，认为没有保存连网信息，进入配网模式
			DevParam.NetWorkFlow = 0;
			break;
		}
		// 慢闪 连网中, 1秒闪烁一次
		if ((count % 100) == 0)
		{
			if(DevParam.SideShowFlag)
			{
				Show_BroadSideSwitch(1);
				DevParam.SideShowFlag = 0;
			}else
			{
				Show_BroadSideSwitch(0);
				DevParam.SideShowFlag = 1;
			}
		}
	}
		
    // 关闭回显
    while(ESP8266_SendCMD((uint8_t *)"ATE0\r\n",(uint8_t *)"OK",200));	   
	
	/******获取本机MAC******/
	ESP8266_GetLocalMAC();
		
    while(1)
    {
        // 网络配网部分
        ESP8266_NetWorkFlow();
            
        // 网络数据接收处理
        ESP8266_NetReceiveInfor();
        
        // 电池，获取电池信息
        Bat_GetWorkInfor();
        
        // 读取电路板状态
        Dev_ScanExtIndicate();
        
        // 切换工作模式
        Dev_SwitchWorkMode();
        
        // 系统正常运行处理流程        
        if(DevParam.RunPhase == RunPhase_Runing) 
        {
//            // 显示部分，侧边跳动
//            Show_BroadSideBeat();
            
            // PMD4，获取空气信息
            PMD4_GetAirInfor();
        }

        // 显示部分，电池图标刷新
        Show_BatIconRefresh();  
				
		// 侧边网络状态图标显示
		Show_BroadSideMode(DevParam.NetWorkFlow);
    }
}

